import myAxios from '../myAxios/myAxios.js';
import myAxios28 from '../myAxios/myAxios28.js';

import myArr from '../myAxios/myArr.js';
let { GetNumber } = myArr;
let GetSapNotClear = async function (metCodeParamString, table9900) {
	// 假设已存在以下全局或导入的依赖项：
	// - myAxios.getSap (用于调用SAP接口的函数，返回Promise，解析为包含TableSet的对象)

	// 1. 调用SAP接口获取多个数据集的未完成采购订单
	let TYPE, TYPE2, TYPE3;
	try {
		// 注意：原C#代码中第一个调用参数与后续不同，JavaScript中保持同步调用
		TYPE = await myAxios.getSap("SAP获取未完成采购订单", "Q902🈹9911", "9901", "QD");
		// sapRawData = (await myAxios.getSap("SAP开始未结束订单（物料号%）已释放", "Q902🈹", "9911")).TableSet['返回表'];
		TYPE2 = await myAxios.getSap("SAP获取未完成采购订单", "Q902🈹QP06", "9901", "QD");
		TYPE3 = await myAxios.getSap("SAP获取未完成采购订单", "Q902🈹9910", "9901", "QD");
	} catch (error) {
		console.error("调用SAP接口获取数据失败:", error);
		throw error; // 或返回空数组 []
	}

	// 2. 提取DataTable并合并数据 (假设TYPE.TableSet['返回表']是对象数组)
	let table = TYPE.TableSet['返回表'];
	let table2 = TYPE2.TableSet['返回表'];
	let table3 = TYPE3.TableSet['返回表'];

	// 合并表格：简单地将三个数组合并
	let mergedTable = [...table, ...table2, ...table3];

	// 3. 按物料号(EMATN)分组，并计算每个组的未清数量总和
	const groupedMap = {}; // 使用对象进行分组聚合

	for (const row of mergedTable) {
		const matnr = row.EMATN; // 物料号
		const menge = GetNumber(row.MENGE); // 订单数量
		const wemng = GetNumber(row.WEMNG); // 已交货数量
		const unclearCount = menge - wemng; // 未清数量

		if (!groupedMap[matnr]) {
			groupedMap[matnr] = {
				MATNR: matnr,
				SAP_NOT_CLEAR_COUNT: 0
			};
		}
		groupedMap[matnr].SAP_NOT_CLEAR_COUNT += unclearCount;
	}

	// 4. 将分组对象转换为数组
	let dtGroupBy = Object.values(groupedMap);

	// 5. (原C#中注释掉的逻辑：处理table9900中存在的物料号。根据需要取消注释并实现)
	// ...

	// 6. 返回最终结果
	console.log('GetSapNotClear :>> ', dtGroupBy);
	return dtGroupBy;
};
export {
	GetSapNotClear
};